home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU10.ARC / MSD - PART 16 < prev    next >
Encoding:
Text File  |  2019-04-13  |  4.5 KB  |  73 lines

  1. ║CM:MSD - PART 16
  2. ║LM21:RM70:PP66:PG60
  3. ║P#31
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6. $├┬9┴           ╠OAD .╪ WITH THE FILE POINTER ╞2╨╘╥ [$┬4] AND OBTAIN THE OFFSET FOR THE START OF THE DIRECTORY ENTRY FROM ┼╬╘╔╬─,╪ [$4├67,╪].
  7. $├┬9╞           ╩╙╥ ╙┼╘╨╬╘ [$─533] TO SET ─╔╥┬╒╞ [$69-$6┴] TO POINT TO THE DIRECTORY ENTRY.
  8. $├┬┴2           ╠OAD .╪ WITH THE FILE INDEX IN ╞2╨╘╥ [$┬4] AND OBTAIN THE FILE TYPE MASK ╨┴╘╘┘╨,╪ [$4├71,╪].
  9. $├┬┴7           ┴╬─ THIS VALUE WITH $07 TO OBTAIN THE FILE TYPE AND SAVE THE RESULT IN ╘┘╨┼ [$┬├].
  10. $├┬┴┬           ╙ET THE RECORD LENGHT ╥┼├ [$┬9] TO ZERO.
  11. $├┬┴╞           ╩╙╥ ╧╨╥┼┴─ [$─8┼4] TO OPEN THE FILE FOR READING AND READ THE FIRST BLOCK.
  12. $├┬┬2           ╙ET .┘ TO $01 AND ╩╙╥ ╘┘╨╞╔╠ [$─1─╞] TO DETERMINE THE FILE TYPE.
  13. $├┬┬7           ╔F IT IS A RELATIVE FILE THEN BRANCH TO ╧╨╔╥10.
  14. $├┬┬9           ╔NCREMENT .┘ TO $02.
  15. $├┬┬┴  ╧╨╔╥10   ╘RANSFER .┘ TO .┴ AND TERMINATE THE ROUTINE WITH A JUMP TO ╙┼╘╨╬╘ [$─533] TO SET ─╔╥┬╒╞ [$69-$6┴] TO POINT TO THE FIRST DATA BYTE.
  16.  
  17.  
  18.  
  19.        ╟╔┬┘╘┼   ╟ET BYTE FROM INTERNAL READ CHANNEL
  20.  
  21. $├┬┬┼           ╙ET ╙┴ [$58] TO $11 (THE INTERNAL READ CHANNEL).
  22.  
  23.  
  24.  
  25.        ╟├┬┘╘┼   ╟ET BYTE FROM ANY CHANNEL
  26.  
  27. $├┬├2           ╩╙╥ ╟┬┘╘┼ [$─401] TO GET THE NEXT BYTE FROM A CHANNEL AND SAVE THE BYTE IN ─┴╘┴ [$5┴].
  28. $├┬├7           ╠OAD .╪ WITH THE CURRENT CHANNEL NUMBER FROM      ╠╔╬─╪ [$57].
  29. $├┬├9           ╧BTAIN THE CHANNEL STATUS FROM ├╚╬╥─┘,╪ [$4├7┼,╪] AND ┴╬─ IT WITH $08 TO SEE IF ┼╧╔ HAS OCCURRED.
  30.                 ╙AVE THE RESULT IN ┼╧╔╞╠╟ [$┬1] AND IF ┼╧╔ WAS NOT DETECTED THEN BRANCH TO ╟╔┬20.
  31. $├┬─2           ╩╙╥ ╘┘╨╞╔╠ [$─1─╞] AND IF THIS IS A RELATIVE FILE THEN BRANCH TO ╟╔┬20.
  32. $├┬─7           ╙ET .┴ TO $80 AND ╩╙╥ ╙├╞╠╟ [$─├╞┼] TO SET THE ┼╧╔ INDICATOR FOR THIS FILE.
  33. $├┬─├  ╟╔┬20    ╥ETURN.
  34.  
  35.  
  36.  
  37.        ├┘┼╪╘    ├OPY RELATIVE FILE
  38.  
  39. $├┬──           ╩╙╥ ╙┼╘─╥╬ [$─28┼] TO SET THE DRIVE NUMBER.
  40. $├┬┼0           ╩╙╥ ╙╙┼╬─ [$┼22┬] TO POSITION TO END OF THE LAST RECORD.
  41. $├┬┼3           ╙AVE SIDE SECTOR INDEX ╙╙╔╬─ [$┬┴] AND SIDE SECTOR NUMBER ╙╙╬╒═ [$┬┬] ON THE STACK.
  42. $├┬┼9           ╙ET THE SECONDARY ADDRESS ╙┴ [$58] TO $12, THE INTERNAL WRITE CHANNEL.
  43. $├┬┼─           ╩╙╥ ╞╬─╫├╚ [$─1├1] TO FIND THE WRITE CHANNEL #.
  44. $├┬╞0           ╩╙╥ ╙┼╘─╥╓ [$─28┼] TO SET THE DRIVE NUMBER FOR THIS CHANNEL.
  45. $├┬╞3           ╩╙╥ ╙╙┼╬─ [$┼22┬] TO POSITION TO END OF THE LAST RECORD.
  46. $├┬╞6           ╩╙╥ ╨╧╙┬╒╞ [$┼300] TO POSITION PROPER DATA BLOCKS INTO BUFFERS.
  47. $├┬╞9           ╙ET ╥1 [$5├] TO ╙╙╔╬─ [$┬┴] AND ╥0 [$5┬] TO      ╙╙╬╒═ [$┬┬].
  48. $├├01           ├LEAR ╥2 [$5─], ╥┼├╨╘╥ [$4├38], AND ╥┼╠╨╘╥ [4├39].
  49. $├├0┬           ╥ESTORE ╙╙╬╒═ [$┬┬] AND ╙╙╔╬─ [$┬┴] FROM THE STACK AND JUMP TO ┴──╥1 [$┼3┴─] TO ADD THE RECORDS TO THE RELATIVE FILE.
  50.  
  51.  
  52.  
  53.        ╥┼╬┴═┼   ╥ENAME A FILE IN THE DIRECTORY
  54.  
  55. $├├14           ╩╙╥ ┴╠╠─╥╙ [$├23├] TO SET UP ALL REQUIRED DRIVES.
  56. $├├17           ╧BTAIN THE DRIVE NUMBER FOR THE SECOND FILE FROM ╞╔╠─╥╓+1 [$4├6─], MASK OFF THE DEFAULT BIT BY ┴╬─ING WITH $01, AND SAVE THE RESULT BACK INTO ╞╔╠─╥╓+1 [$4├6─].
  57. $├├1╞           ├OMPARE THIS DRIVE NUMBER WITH THAT FOR THE FIRST FILE IN ╞╔╠─╥╓ [$4├6├] AND BRANCH TO ╥╬10 IF THEY ARE EQUAL.
  58. $├├24           ╧╥ THE DRIVE NUMBER WITH $80 TO FORCE A SEARCH OF BOTH DRIVES.
  59. $├├26  ╥╬10     ╙TORE THE DRIVE NUMBER INTO ╞╔╠─╥╓ [$4├6├].
  60. $├├29           ╩╙╥ ╠╧╧╦╒╨ [$├366] TO LOOK UP THE FILE NAMES IN THE DIRECTORY.
  61. $├├2├           ╩╙╥ ├╚╦╔╧ [$├├78] TO CHECK FOR THE EXISTENCE OF THE FILES.
  62. $├├2╞           ╠OAD .┴ WITH THE DRIVE NUMBER FOR THE SECOND FILE FROM ╞╔╠╥─╓+1 [$4├6─], ┴╬─ IT WITH $01 TO MASK OFF THE DEFAULT BIT, AND SET THE DRIVE NUMBER      ─╥╓╬╒═ [$54] FROM THIS VALUE.
  63. $├├36           ╙ET ╙┼├╘╧╥ [$56] TO ┼╬╘╙┼├+1 [$4├63], THE SECTOR NUMBER OF THE DIRECTORY BLOCK CONTAINING THE SECOND FILE NAME.
  64. $├├3┬           ╩╙╥ ╥─┴┬ [$──╞┼] TO READ THE DIRECTORY BLOCK.
  65. $├├3┼           ╩╙╥ ╫┴╘╩╧┬ [$─5╞7] TO WAIT FOR THE JOB TO FINISH.
  66. $├├41           ╠OAD .┴ WITH THE POINTER TO THE ENTRY WITHIN THE DIRECTORY BLOCK ┼╬╘╔╬─+1 [$4├68], ADD $03 TO GIVE THE OFFSET TO THE FILE NAME, AND SET DIRECTORY POINTER TO THIS VALUE BY ╩╙╥ ╙┼╘╨╬╘ [$─533].
  67. $├├4┴           ╩╙╥ ╟┼╘┴├╘ [$──5╞] TO OBTAIN THE ACTIVE BUFFER NUMBER AND TRANSFER IT TO .┘.
  68. $├├4┼           ╠OAD .╪ WITH THE OFFSET TO THE NEW FILE NAME FROM ╞╔╠╘┬╠ [$4┼30].
  69. $├├51           ╠OAD .┴ WITH $10, THE MAXIMUM FILE NAME LENGTH, AND ╩╙╥ ╘╥╬┴═┼ [$├584] TO COPY THE NEW FILE NAME FROM THE COMMAND STRING TO THE DIRECTORY ENTRY.
  70. $├├56           ╩╙╥ ╫╥╘╧╒╘ [$─┼02] TO WRITE OUT THE REVISED DIRECTORY BLOCK.
  71. $├├59           ╩╙╥ ╫┴╘╩╧┬ [$─5╞7] TO WAIT FOR THE JOB TO FINISH.
  72. $├├5├           ╩UMP TO ┼╬─├═─ [$├0├╞] TO TERMINATE THE ROUTINE.
  73.